#ifndef GRAPHICS_H
#define GRAPHICS_H

#include "Common.h"

namespace GenBen {

class Texture
{
public:
	Texture() {};
	virtual ~Texture() {};

	virtual uint getWidth() = 0;
	virtual uint getHeight() = 0;

	virtual void release() = 0;
};

class Graphics
{
public:
	Graphics() {};
	virtual ~Graphics() {};

	virtual Texture* loadTexture(string filename) = 0;

	virtual string getDescription() = 0;
	
	virtual void clear(const Color& color) = 0;
	virtual void present() = 0;

	virtual void draw(Texture* texture, int layer, const RectI& source, const VectorI& dest, const Color& tint) = 0; 
	virtual void draw(Texture* texture, int layer, const RectI& source, const RectI& dest, const Color& tint) = 0; 
	virtual void draw(Texture* texture, int layer, const RectI& source, const VectorI& dest) = 0; 
	virtual void draw(Texture* texture, int layer, const RectI& source, const RectI& dest) = 0; 
};

} // namespace

#endif

